home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tech Arsenal 1
/
Tech Arsenal (Arsenal Computer).ISO
/
tek-02
/
intrfc62.zip
/
HEAD.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1991-05-02
|
4KB
|
115 lines
unit head;
{ Header declarations and dumper }
interface
uses globals,util,dump;
type
unit_flags = set of (ieee_reals,overlays,windows,f8,moveable,f20,preload,f80,
f100,f200,f400,f800,discardable,f2000,f4000,f8000);
type
header_ptr = ^header_rec;
header_rec = record
file_id: array[0..3] of char; { 0-3 }
i4, { 4-5 }
i6, { 6-7 }
ofs_this_unit, { 8-9 }
ofs_hashtable, { A-B }
ofs_entry_pts, { C-D }
ofs_code_blocks, { E-F }
ofs_const_blocks, {10-11}
ofs_var_blocks, {12-13}
ofs_dll_list, {14-15}
ofs_unit_list, {16-17}
ofs_src_name, {18-19}
ofs_line_lengths, {1A-1B}
sym_size, {1C-1D}
code_size, {1E-1F}
const_size, {20-21}
reloc_size, {22-23}
vmt_size, {24-25}
var_size, {26-27}
ofs_full_hash: word; {28-29}
flags : unit_flags; {2A-2B}
other : array[$2C..$3F] of byte; {2C-3F}
end;
var
header : ^header_rec;
procedure print_header;
implementation
procedure print_header;
var
i:integer;
new_flags : unit_flags;
begin
with header^ do
begin
writeln('file_id:':20,file_id);
writeln('i4:':20,hexword2(i4));
writeln('i6:':20,hexword2(i6));
writeln('ofs_this_unit:':20,hexword2(ofs_this_unit));
writeln('ofs_hashtable:':20,hexword2(ofs_hashtable));
writeln('ofs_entry_pts:':20,hexword2(ofs_entry_pts));
writeln('ofs_code_blocks:':20,hexword2(ofs_code_blocks));
writeln('ofs_const_blocks:':20,hexword2(ofs_const_blocks));
writeln('ofs_var_blocks:':20,hexword2(ofs_var_blocks));
writeln('ofs_dll_list:':20,hexword2(ofs_dll_list));
writeln('ofs_unit_list:':20,hexword2(ofs_unit_list));
writeln('ofs_src_name:':20,hexword2(ofs_src_name));
writeln('ofs_line_lengths:':20,hexword2(ofs_line_lengths));
writeln('sym_size:':20,hexword2(sym_size));
writeln('code_size:':20,hexword2(code_size));
writeln('const_size:':20,hexword2(const_size));
writeln('reloc_size:':20,hexword2(reloc_size));
writeln('vmt_size:':20,hexword2(vmt_size));
writeln('var_size:':20,hexword2(var_size));
writeln('ofs_full_hash:':20,hexword2(ofs_full_hash));
write('flags:':20);
if ieee_reals in flags then
write('N+':4)
else
write('N-':4);
new_flags := flags - [ieee_reals];
writeln;
if windows in flags then
begin
write('TPW options $C:':20);
if moveable in flags then
write('Moveable ')
else
write('Fixed ');
if preload in flags then
write('Preload ')
else
write('Demandload ');
if discardable in flags then
write('Discardable ')
else
write('Permanent ');
new_flags := flags - [windows,moveable,preload,discardable];
end
else
begin
write('TP for DOS options:':20);
if overlays in flags then
write('O+':4)
else
write('O-':4);
new_flags := flags - [overlays];
end;
if new_flags <> [] then
write('unknown flags ',hexword(word(new_flags)));
writeln;
writeln('Other:');
dumpbytes(header^,$2c,$3f-$2b);
writeln;
end;
end;
end.